<script>
if (window.testRunner)
    testRunner.dumpEditingCallbacks();
</script>
<script>
function log(str) {
    var li = document.createElement("li");
    li.appendChild(document.createTextNode(str));
    var console = document.getElementById("console");
    console.appendChild(li);
}

function runTest() {
    try {
        if (window.testRunner)
            testRunner.dumpAsText();
            
        var selection = window.getSelection();
        var element = document.getElementById("test");
        
        if (selection.setBaseAndExtent)
            selection.setBaseAndExtent(element, 0, element, 1);
        else if (selection.selectAllChildren)
            selection.selectAllChildren(element);
        else
            throw("Couldn't set a selection.");
        
        if (selection.toString) {
            var string = selection.toString();
            if (string != selection)
                throw("Implicit toString call did not match explicit call");
            if (string != "hello world")
                throw("Selection::toString() returned incorrect results.");
            log("Success");
        } else
            throw("Selection::toString() not supported");
    } catch(e) {
        log("Test Failed.  Error was: " + e);
    }
}
</script>
<body>
<p>This tests Selection::toString(): that it exists, that it returns the same result as the implicit toString call, and that it returns the correct results.</p>
<div id="test" style="border: 1px solid black;">hello world</div>
<ul id="console"></ul>
<script>runTest();</script>
</body>
